/*!
 * Ace v1.4.0
 */
if ("undefined" == typeof jQuery)
    throw new Error("Ace's JavaScript requires jQuery");
!function(a) {
    "ace"in window || (window.ace = {}),
    "helper"in window.ace || (window.ace.helper = {}),
    "vars"in window.ace || (window.ace.vars = {}),
    window.ace.vars.icon = " ace-icon ",
    window.ace.vars[".icon"] = ".ace-icon",
    ace.vars.touch = "ontouchstart"in window;
    var b = navigator.userAgent;
    ace.vars.webkit = !!b.match(/AppleWebKit/i),
    ace.vars.safari = !!b.match(/Safari/i) && !b.match(/Chrome/i),
    ace.vars.android = ace.vars.safari && !!b.match(/Android/i),
    ace.vars.ios_safari = !!b.match(/OS ([4-9])(_\d)+ like Mac OS X/i) && !b.match(/CriOS/i),
    ace.vars.ie = window.navigator.msPointerEnabled || document.all && document.querySelector,
    ace.vars.old_ie = document.all && !document.addEventListener,
    ace.vars.very_old_ie = document.all && !document.querySelector,
    ace.vars.firefox = "MozAppearance"in document.documentElement.style,
    ace.vars.non_auto_fixed = ace.vars.android || ace.vars.ios_safari,
    ace.click_event = ace.vars.touch && jQuery.fn.tap ? "tap" : "click"
}(),
function(a, b) {
    a.unCamelCase = function(a) {
        return a.replace(/([a-z])([A-Z])/g, function(a, b, c) {
            return b + "-" + c.toLowerCase()
        })
    }
    ,
    a.strToVal = function(a) {
        var b = a.match(/^(?:(true)|(false)|(null)|(\-?[\d]+(?:\.[\d]+)?)|(\[.*\]|\{.*\}))$/i)
          , c = a;
        if (b)
            if (b[1])
                c = !0;
            else if (b[2])
                c = !1;
            else if (b[3])
                c = null;
            else if (b[4])
                c = parseFloat(a);
            else if (b[5])
                try {
                    c = JSON.parse(a)
                } catch (d) {}
        return c
    }
    ,
    a.getAttrSettings = function(b, c, d) {
        if (b) {
            var e = c instanceof Array ? 1 : 2
              , d = d ? d.replace(/([^\-])$/, "$1-") : "";
            d = "data-" + d;
            var f = {};
            for (var g in c)
                if (c.hasOwnProperty(g)) {
                    var h, i = 1 == e ? c[g] : g, j = a.unCamelCase(i.replace(/[^A-Za-z0-9]{1,}/g, "-")).toLowerCase();
                    if (!(h = b.getAttribute(d + j)))
                        continue;
                    f[i] = a.strToVal(h)
                }
            return f
        }
    }
    ,
    a.scrollTop = function() {
        return document.scrollTop || document.documentElement.scrollTop || document.body.scrollTop
    }
    ,
    a.winHeight = function() {
        return window.innerHeight || document.documentElement.clientHeight
    }
    ,
    a.redraw = function(a, b) {
        if (a) {
            var c = a.style.display;
            a.style.display = "none",
            a.offsetHeight,
            b !== !0 ? a.style.display = c : setTimeout(function() {
                a.style.display = c
            }, 10)
        }
    }
}(ace.helper),
jQuery(function(a) {
    try {
        ace.demo.init()
    } catch (b) {}
}),
function(a, b) {
    var c = a(".btn-scroll-up");
    if (c.length > 0) {
        var d = !1;
        a(window).on("scroll.scroll_btn", function() {
            var a = ace.helper.scrollTop()
              , b = ace.helper.winHeight()
              , e = document.body.scrollHeight;
            a > parseInt(b / 4) || a > 0 && e >= b && b + a >= e - 1 ? d || (c.addClass("display"),
            d = !0) : d && (c.removeClass("display"),
            d = !1)
        }).triggerHandler("scroll.scroll_btn"),
        c.on(ace.click_event, function() {
            var b = Math.min(500, Math.max(100, parseInt(ace.helper.scrollTop() / 3)));
            return a("html,body").animate({
                scrollTop: 0
            }, b),
            !1
        })
    }
}(window.jQuery),
function(a, b) {
    function c(b, c) {
        function e(b) {
            var c = ""
              , d = a(".breadcrumb");
            if (d.length > 0 && d.is(":visible")) {
                d.find("> li:not(:first-child)").remove();
                var e = 0;
                b.parents(".nav li").each(function() {
                    var b = a(this).find("> a")
                      , f = b.clone();
                    f.find("i,.fa,.glyphicon,.ace-icon,.menu-icon,.badge,.label").remove();
                    var g = f.text();
                    f.remove();
                    var h = b.attr("href");
                    if (0 == e) {
                        var i = a('<li class="active"></li>').appendTo(d);
                        i.text(g),
                        c = g
                    } else {
                        var i = a("<li><a /></li>").insertAfter(d.find("> li:first-child"));
                        i.find("a").attr("href", h).text(g)
                    }
                    e++
                })
            }
            return c
        }
        function f(b) {
            var c = g.find(".ajax-append-title");
            if (c.length > 0)
                document.title = c.text(),
                c.remove();
            else if (b.length > 0) {
                var d = a.trim(String(document.title).replace(/^(.*)[\-]/, ""));
                d && (d = " - " + d),
                b = a.trim(b) + d
            }
        }
        var g = a(b)
          , h = this;
        g.attr("data-ajax-content", "true");
        var i = ace.helper.getAttrSettings(b, a.fn.ace_ajax.defaults);
        this.settings = a.extend({}, a.fn.ace_ajax.defaults, c, i);
        var j = !1
          , k = a();
        this.force_reload = !1,
        this.loadUrl = function(a, b, c) {
            var d = !1;
            a = a.replace(/^(\#\!)?\#/, ""),
            this.force_reload = b === !1,
            "function" == typeof this.settings.content_url && (d = this.settings.content_url(a)),
            "string" == typeof d && this.getUrl(d, a, c)
        }
        ,
        this.loadAddr = function(a, b, c) {
            this.force_reload = c === !1,
            this.getUrl(a, b, !1)
        }
        ,
        this.reload = function() {
            var b = a.trim(window.location.hash);
            !b && this.settings.default_url && (b = this.settings.default_url),
            this.loadUrl(b, !1)
        }
        ,
        this.post = function(b, c, d, e) {
            var b = b || a.trim(location.href.replace(location.hash, ""));
            if (b) {
                var c = c || {}
                  , d = d || !1;
                this.getUrl(b, null, !1, "POST", c, d, e)
            }
        }
        ,
        this.getUrl = function(b, c, d, i, l, m, n) {
            if (!j) {
                var o, i = i || "GET", m = "GET" == i || "POST" == i && 1 == m, l = l || null;
                if (g.trigger(o = a.Event("ajaxloadstart"), {
                    url: b,
                    hash: c,
                    method: i,
                    data: l
                }),
                !o.isDefaultPrevented()) {
                    h.startLoading();
                    var p = "GET" == i ? {
                        url: b,
                        cache: !this.force_reload
                    } : {
                        url: b,
                        method: "POST",
                        data: l
                    };
                    "POST" == i && "object" == typeof n && (p = a.extend({}, p, n)),
                    a.ajax(p).error(function() {
                        g.trigger("ajaxloaderror", {
                            url: b,
                            hash: c,
                            method: i,
                            data: l
                        }),
                        h.stopLoading(!0)
                    }).done(function(j) {
                        if (g.trigger("ajaxloaddone", {
                            url: b,
                            hash: c,
                            method: i,
                            data: l
                        }),
                        "POST" == i) {
                            var n;
                            g.trigger(n = a.Event("ajaxpostdone", {
                                url: b,
                                data: l,
                                result: j
                            })),
                            n.isDefaultPrevented() && (m = !1)
                        }
                        var o = null
                          , p = "";
                        if ("function" == typeof h.settings.update_active)
                            o = h.settings.update_active.call(null, c, b, i, m);
                        else if (h.settings.update_active === !0 && c && (o = a('a[data-url="' + c + '"]'),
                        o.length > 0)) {
                            var q = o.closest(".nav");
                            if (q.length > 0) {
                                q.find(".active").each(function() {
                                    var b = "active";
                                    (a(this).hasClass("hover") || h.settings.close_active) && (b += " open"),
                                    a(this).removeClass(b),
                                    h.settings.close_active && a(this).find(" > .submenu").css("display", "")
                                });
                                o.closest("li").addClass("active").parents(".nav li").addClass("active open");
                                q.closest(".sidebar[data-sidebar-scroll=true]").each(function() {
                                    var b = a(this);
                                    b.ace_sidebar_scroll("reset"),
                                    1 == d && b.ace_sidebar_scroll("scroll_to_active")
                                })
                            }
                        }
                        "function" == typeof h.settings.update_breadcrumbs ? p = h.settings.update_breadcrumbs.call(null, c, b, o, i, m) : h.settings.update_breadcrumbs === !0 && null != o && o.length > 0 && (p = e(o)),
                        k.addClass("content-loaded").detach(),
                        m && (j = String(j).replace(/<(title|link)([\s\>])/gi, '<div class="hidden ajax-append-$1"$2').replace(/<\/(title|link)\>/gi, "</div>"),
                        g.empty().html(j)),
                        a(h.settings.loading_overlay || g).append(k),
                        m && setTimeout(function() {
                            a("head").find("link.ace-ajax-stylesheet").remove();
                            for (var b = ["link.ace-main-stylesheet", "link#main-ace-style", 'link[href*="/ace.min.css"]', 'link[href*="/ace.css"]'], c = [], d = 0; d < b.length && (c = a("head").find(b[d]).first(),
                            !(c.length > 0)); d++)
                                ;
                            g.find(".ajax-append-link").each(function(b) {
                                var d = a(this);
                                if (d.attr("href")) {
                                    var e = jQuery("<link />", {
                                        type: "text/css",
                                        rel: "stylesheet",
                                        "class": "ace-ajax-stylesheet"
                                    });
                                    c.length > 0 ? e.insertBefore(c) : e.appendTo("head"),
                                    e.attr("href", d.attr("href"))
                                }
                                d.remove()
                            })
                        }, 10),
                        "function" == typeof h.settings.update_title ? h.settings.update_title.call(null, c, b, p, i, m) : h.settings.update_title === !0 && "GET" == i && f(p),
                        !d && m && a("html,body").animate({
                            scrollTop: 0
                        }, 250),
                        g.trigger("ajaxloadcomplete", {
                            url: b,
                            hash: c,
                            method: i,
                            data: l
                        });
                        var r = /\.(?:\s*)ace(?:_a|A)jax(?:\s*)\((?:\s*)(?:\'|\")loadScripts(?:\'|\")/;
                        j.match(r) ? h.stopLoading() : h.stopLoading(!0)
                    })
                }
            }
        }
        ;
        var l = !1
          , m = null;
        this.startLoading = function() {
            j || (j = !0,
            this.settings.loading_overlay || "static" != g.css("position") || (g.css("position", "relative"),
            l = !0),
            k.remove(),
            k = a('<div class="ajax-loading-overlay"><i class="ajax-loading-icon ' + (this.settings.loading_icon || "") + '"></i> ' + this.settings.loading_text + "</div>"),
            "body" == this.settings.loading_overlay ? a("body").append(k.addClass("ajax-overlay-body")) : this.settings.loading_overlay ? a(this.settings.loading_overlay).append(k) : g.append(k),
            this.settings.max_load_wait !== !1 && (m = setTimeout(function() {
                if (m = null,
                j) {
                    var b;
                    g.trigger(b = a.Event("ajaxloadlong")),
                    b.isDefaultPrevented() || h.stopLoading(!0)
                }
            }, 1e3 * this.settings.max_load_wait)))
        }
        ,
        this.stopLoading = function(a) {
            a === !0 ? (j = !1,
            k.remove(),
            l && (g.css("position", ""),
            l = !1),
            null != m && (clearTimeout(m),
            m = null)) : (k.addClass("almost-loaded"),
            g.one("ajaxscriptsloaded.inner_call", function() {
                h.stopLoading(!0)
            }))
        }
        ,
        this.working = function() {
            return j
        }
        ,
        this.loadScripts = function(b, c) {
            var b = b || [];
            a.ajaxPrefilter("script", function(a) {
                a.cache = !0
            }),
            setTimeout(function() {
                function e() {
                    "function" == typeof c && c(),
                    a('.btn-group[data-toggle="buttons"] > .btn').button(),
                    g.trigger("ajaxscriptsloaded")
                }
                function f(a) {
                    a += 1,
                    a < b.length ? h(a) : e()
                }
                function h(c) {
                    if (c = c || 0,
                    !b[c])
                        return f(c);
                    var g = "js-" + b[c].replace(/[^\w\d\-]/g, "-").replace(/\-\-/g, "-");
                    d[g] !== !0 ? a.getScript(b[c]).done(function() {
                        d[g] = !0
                    }).complete(function() {
                        k++,
                        k >= i && j ? e() : f(c)
                    }) : f(c)
                }
                for (var i = 0, k = 0, l = 0; l < b.length; l++)
                    b[l] && !function() {
                        var a = "js-" + b[l].replace(/[^\w\d\-]/g, "-").replace(/\-\-/g, "-");
                        d[a] !== !0 && i++
                    }();
                i > 0 ? h() : e()
            }, 10)
        }
        ,
        a(window).off("hashchange.ace_ajax").on("hashchange.ace_ajax", function(b, c) {
            var d = a.trim(window.location.hash);
            if (d && 0 != d.length) {
                if (h.settings.close_mobile_menu)
                    try {
                        a(h.settings.close_mobile_menu).ace_sidebar("mobileHide")
                    } catch (b) {}
                h.settings.close_dropdowns && a(".dropdown.open .dropdown-toggle").dropdown("toggle"),
                h.loadUrl(d, null, c)
            }
        }).trigger("hashchange.ace_ajax", [!0]);
        var n = a.trim(window.location.hash);
        !n && this.settings.default_url && (window.location.hash = this.settings.default_url)
    }
    var d = {};
    a.fn.aceAjax = a.fn.ace_ajax = function(d, e, f, g, h) {
        var i, j = this.each(function() {
            var j = a(this)
              , k = j.data("ace_ajax")
              , l = "object" == typeof d && d;
            k || j.data("ace_ajax", k = new c(this,l)),
            "string" == typeof d && "function" == typeof k[d] && (i = h !== b ? k[d](e, f, g, h) : g !== b ? k[d](e, f, g) : f !== b ? k[d](e, f) : k[d](e))
        });
        return i === b ? j : i
    }
    ,
    a.fn.aceAjax.defaults = a.fn.ace_ajax.defaults = {
        content_url: !1,
        default_url: !1,
        loading_icon: "fa fa-spin fa-spinner fa-2x orange",
        loading_text: "",
        loading_overlay: null,
        update_breadcrumbs: !0,
        update_title: !0,
        update_active: !0,
        close_active: !1,
        max_load_wait: !1,
        close_mobile_menu: !1,
        close_dropdowns: !1
    }
}(window.jQuery),
function(a, b) {
    if (ace.vars.touch) {
        var c = "touchstart MSPointerDown pointerdown"
          , d = "touchend touchcancel MSPointerUp MSPointerCancel pointerup pointercancel"
          , e = "touchmove MSPointerMove MSPointerHover pointermove";
        a.event.special.ace_drag = {
            setup: function() {
                var f = 0
                  , g = a(this);
                g.on(c, function(c) {
                    function h(a) {
                        if (k) {
                            var b = a.originalEvent.touches ? a.originalEvent.touches[0] : a;
                            if (i = {
                                coords: [b.pageX, b.pageY]
                            },
                            k && i && (m = 0,
                            n = 0,
                            l = Math.abs(n = k.coords[1] - i.coords[1]) > f && Math.abs(m = k.coords[0] - i.coords[0]) <= Math.abs(n) ? n > 0 ? "up" : "down" : Math.abs(m = k.coords[0] - i.coords[0]) > f && Math.abs(n) <= Math.abs(m) ? m > 0 ? "left" : "right" : !1,
                            l !== !1)) {
                                var c = {
                                    cancel: !1
                                };
                                k.origin.trigger({
                                    type: "ace_drag",
                                    direction: l,
                                    dx: m,
                                    dy: n,
                                    retval: c
                                }),
                                0 == c.cancel && a.preventDefault()
                            }
                            k.coords[0] = i.coords[0],
                            k.coords[1] = i.coords[1]
                        }
                    }
                    var i, j = c.originalEvent.touches ? c.originalEvent.touches[0] : c, k = {
                        coords: [j.pageX, j.pageY],
                        origin: a(c.target)
                    }, l = !1, m = 0, n = 0;
                    g.on(e, h).one(d, function(a) {
                        g.off(e, h),
                        k = i = b
                    })
                })
            }
        }
    }
}(window.jQuery),
function(a, b) {
    function c(b, c) {
        function e() {
            this.mobile_view = this.mobile_style < 4 && this.is_mobile_view(),
            this.collapsible = !this.mobile_view && this.is_collapsible(),
            this.minimized = !this.collapsible && this.$sidebar.hasClass(k) || 3 == this.mobile_style && this.mobile_view && this.$sidebar.hasClass(l),
            this.horizontal = !(this.mobile_view || this.collapsible) && this.$sidebar.hasClass(n)
        }
        var f = this;
        this.$sidebar = a(b),
        this.$sidebar.attr("data-sidebar", "true"),
        this.$sidebar.attr("id") || this.$sidebar.attr("id", "id-sidebar-" + ++d);
        var g = ace.helper.getAttrSettings(b, a.fn.ace_sidebar.defaults, "sidebar-");
        this.settings = a.extend({}, a.fn.ace_sidebar.defaults, c, g),
        this.minimized = !1,
        this.collapsible = !1,
        this.horizontal = !1,
        this.mobile_view = !1,
        this.vars = function() {
            return {
                minimized: this.minimized,
                collapsible: this.collapsible,
                horizontal: this.horizontal,
                mobile_view: this.mobile_view
            }
        }
        ,
        this.get = function(a) {
            return this.hasOwnProperty(a) ? this[a] : void 0
        }
        ,
        this.set = function(a, b) {
            this.hasOwnProperty(a) && (this[a] = b)
        }
        ,
        this.ref = function() {
            return this
        }
        ;
        var h = function(b, c) {
            var d, e, f = a(this).find(ace.vars[".icon"]);
            if (f.length > 0) {
                d = f.attr("data-icon1"),
                e = f.attr("data-icon2"),
                "undefined" != typeof b ? b ? f.removeClass(d).addClass(e) : f.removeClass(e).addClass(d) : f.toggleClass(d).toggleClass(e);
                try {
                    c !== !1 && ace.settings.saveState(f.get(0))
                } catch (g) {}
            }
        }
          , i = function() {
            var b = f.$sidebar.find(".sidebar-collapse");
            return 0 == b.length && (b = a('.sidebar-collapse[data-target="#' + (f.$sidebar.attr("id") || "") + '"]')),
            b = 0 != b.length ? b[0] : null
        };
        this.toggleMenu = function(c, d) {
            if (this.collapsible)
                return !1;
            this.minimized = !this.minimized;
            var d = !(c === !1 || d === !1);
            this.minimized ? this.$sidebar.addClass("menu-min") : this.$sidebar.removeClass("menu-min");
            try {
                d && ace.settings.saveState(b, "class", "menu-min", this.minimized)
            } catch (e) {}
            return c || (c = i()),
            c && h.call(c, this.minimized, d),
            ace.vars.old_ie && ace.helper.redraw(b),
            a(document).trigger("settings.ace", ["sidebar_collapsed", this.minimized, b, d]),
            this.minimized ? this.$sidebar.trigger(a.Event("collapse.ace.sidebar")) : this.$sidebar.trigger(a.Event("expand.ace.sidebar")),
            !0
        }
        ,
        this.collapse = function(a, b) {
            this.collapsible || (this.minimized = !1,
            this.toggleMenu(a, b))
        }
        ,
        this.expand = function(a, b) {
            this.collapsible || (this.minimized = !0,
            this.toggleMenu(a, b))
        }
        ,
        this.showResponsive = function() {
            this.$sidebar.removeClass(l).removeClass(m)
        }
        ,
        this.toggleResponsive = function(b, c) {
            if (this.mobile_view && 3 == this.mobile_style) {
                if (this.$sidebar.hasClass("menu-min")) {
                    this.$sidebar.removeClass("menu-min");
                    var d = i();
                    d && h.call(d)
                }
                var c = "boolean" == typeof c ? c : "boolean" == typeof b ? b : this.$sidebar.hasClass(l);
                if (c ? this.$sidebar.addClass(m).removeClass(l) : this.$sidebar.removeClass(m).addClass(l),
                this.minimized = !c,
                b && "object" == typeof b || (b = this.$sidebar.find(".sidebar-expand"),
                0 == b.length && (b = a('.sidebar-expand[data-target="#' + (this.$sidebar.attr("id") || "") + '"]')),
                b = 0 != b.length ? b[0] : null),
                b) {
                    var e, g, j = a(b).find(ace.vars[".icon"]);
                    j.length > 0 && (e = j.attr("data-icon1"),
                    g = j.attr("data-icon2"),
                    c ? j.removeClass(e).addClass(g) : j.removeClass(g).addClass(e))
                }
                c ? f.$sidebar.trigger(a.Event("mobileShow.ace.sidebar")) : f.$sidebar.trigger(a.Event("mobileHide.ace.sidebar")),
                a(document).triggerHandler("settings.ace", ["sidebar_collapsed", this.minimized])
            }
        }
        ,
        this.is_collapsible = function() {
            var b;
            return this.$sidebar.hasClass("navbar-collapse") && null != (b = a('.navbar-toggle[data-target="#' + (this.$sidebar.attr("id") || "") + '"]').get(0)) && b.scrollHeight > 0
        }
        ,
        this.is_mobile_view = function() {
            var b;
            return null != (b = a('.menu-toggler[data-target="#' + (this.$sidebar.attr("id") || "") + '"]').get(0)) && b.scrollHeight > 0
        }
        ;
        var j = !1;
        this.show = function(b, c, d) {
            if (d = d !== !1,
            d && j)
                return !1;
            var e, f = a(b);
            if (f.trigger(e = a.Event("show.ace.submenu")),
            e.isDefaultPrevented())
                return !1;
            d && (j = !0),
            c = "undefined" != typeof c ? c : this.settings.duration,
            f.css({
                height: 0,
                overflow: "hidden",
                display: "block"
            }).removeClass("nav-hide").addClass("nav-show").parent().addClass("open"),
            b.scrollTop = 0;
            var g = function(b, c) {
                b && b.stopPropagation(),
                f.css({
                    "transition-property": "",
                    "transition-duration": "",
                    overflow: "",
                    height: ""
                }),
                c !== !1 && f.trigger(a.Event("shown.ace.submenu")),
                d && (j = !1)
            }
              , h = b.scrollHeight;
            return 0 != c && 0 != h && a.support.transition.end ? (f.css({
                height: h,
                "transition-property": "height",
                "transition-duration": c / 1e3 + "s"
            }).one(a.support.transition.end, g),
            ace.vars.android && setTimeout(function() {
                g(null, !1),
                ace.helper.redraw(b)
            }, c + 20)) : g(),
            !0
        }
        ,
        this.hide = function(b, c, d) {
            if (d = d !== !1,
            d && j)
                return !1;
            var e, f = a(b);
            if (f.trigger(e = a.Event("hide.ace.submenu")),
            e.isDefaultPrevented())
                return !1;
            d && (j = !0),
            c = "undefined" != typeof c ? c : this.settings.duration;
            var g = b.scrollHeight;
            f.css({
                height: g,
                overflow: "hidden",
                display: "block"
            }).parent().removeClass("open"),
            b.offsetHeight;
            var h = function(b, c) {
                b && b.stopPropagation(),
                f.css({
                    display: "none",
                    overflow: "",
                    height: "",
                    "transition-property": "",
                    "transition-duration": ""
                }).removeClass("nav-show").addClass("nav-hide"),
                c !== !1 && f.trigger(a.Event("hidden.ace.submenu")),
                d && (j = !1)
            };
            return 0 != c && 0 != g && a.support.transition.end ? (f.css({
                height: 0,
                "transition-property": "height",
                "transition-duration": c / 1e3 + "s"
            }).one(a.support.transition.end, h),
            ace.vars.android && setTimeout(function() {
                h(null, !1),
                ace.helper.redraw(b)
            }, c + 20)) : h(),
            !0
        }
        ,
        this.toggle = function(a, b) {
            if (b = b || f.settings.duration,
            0 == a.scrollHeight) {
                if (this.show(a, b))
                    return 1
            } else if (this.hide(a, b))
                return -1;
            return 0
        }
        ,
        this.mobileToggle = function(a) {
            this.mobile_view ? 1 == this.mobile_style || 2 == this.mobile_style ? this.toggleMobile("object" == typeof a ? a : null, "boolean" == typeof a ? a : null) : 3 == this.mobile_style && this.toggleResponsive("object" == typeof a ? a : null, "boolean" == typeof a ? a : null) : this.collapsible && this.toggleCollapsible("object" == typeof a ? a : null, "boolean" == typeof a ? a : null)
        }
        ,
        this.mobileShow = function() {
            this.mobileToggle(!0)
        }
        ,
        this.mobileHide = function() {
            this.mobileToggle(!1)
        }
        ,
        this.toggleMobile = function(b, c) {
            if (1 == this.mobile_style || 2 == this.mobile_style) {
                var c = "boolean" == typeof c ? c : "boolean" == typeof b ? b : !this.$sidebar.hasClass("display");
                b && "object" == typeof b || (b = a('.menu-toggler[data-target="#' + (this.$sidebar.attr("id") || "") + '"]'),
                b = 0 != b.length ? b[0] : null),
                c ? (this.$sidebar.addClass("display"),
                b && a(b).addClass("display")) : (this.$sidebar.removeClass("display"),
                b && a(b).removeClass("display")),
                c ? f.$sidebar.trigger(a.Event("mobileShow.ace.sidebar")) : f.$sidebar.trigger(a.Event("mobileHide.ace.sidebar"))
            }
        }
        ,
        this.toggleCollapsible = function(b, c) {
            if (4 == this.mobile_style) {
                var c = "boolean" == typeof c ? c : "boolean" == typeof b ? b : !this.$sidebar.hasClass("in");
                c ? this.$sidebar.collapse("show") : (this.$sidebar.removeClass("display"),
                this.$sidebar.collapse("hide")),
                c ? f.$sidebar.trigger(a.Event("mobileShow.ace.sidebar")) : f.$sidebar.trigger(a.Event("mobileHide.ace.sidebar"))
            }
        }
        ;
        var k = "menu-min"
          , l = "responsive-min"
          , m = "responsive-max"
          , n = "h-sidebar"
          , o = function() {
            this.mobile_style = 1,
            this.$sidebar.hasClass("responsive") && !a('.menu-toggler[data-target="#' + this.$sidebar.attr("id") + '"]').hasClass("navbar-toggle") ? this.mobile_style = 2 : this.$sidebar.hasClass(l) ? this.mobile_style = 3 : this.$sidebar.hasClass("navbar-collapse") && (this.mobile_style = 4)
        };
        o.call(f),
        a(window).on("resize.sidebar.vars", function() {
            e.call(f)
        }).triggerHandler("resize.sidebar.vars"),
        this.$sidebar.on(ace.click_event + ".ace.submenu", ".nav-list", function(b) {
            var c = this
              , d = a(b.target).closest("a");
            if (d && 0 != d.length) {
                var e = f.minimized && !f.collapsible;
                if (d.hasClass("dropdown-toggle")) {
                    b.preventDefault();
                    var g = d.siblings(".submenu").get(0);
                    if (!g)
                        return !1;
                    var h = a(g)
                      , i = 0
                      , j = g.parentNode.parentNode;
                    if (e && j == c || h.parent().hasClass("hover") && "absolute" == h.css("position") && !f.collapsible)
                        return !1;
                    var k = 0 == g.scrollHeight;
                    return k && f.settings.hide_open_subs && a(j).find("> .open > .submenu").each(function() {
                        this == g || a(this.parentNode).hasClass("active") || (i -= this.scrollHeight,
                        f.hide(this, f.settings.duration, !1))
                    }),
                    k ? (f.show(g, f.settings.duration),
                    0 != i && (i += g.scrollHeight)) : (f.hide(g, f.settings.duration),
                    i -= g.scrollHeight),
                    0 != i && ("true" != f.$sidebar.attr("data-sidebar-scroll") || f.minimized || f.$sidebar.ace_sidebar_scroll("prehide", i)),
                    !1
                }
                if ("tap" == ace.click_event && e && d.get(0).parentNode.parentNode == c) {
                    var l = d.find(".menu-text").get(0);
                    if (null != l && b.target != l && !a.contains(l, b.target))
                        return b.preventDefault(),
                        !1
                }
                if (ace.vars.ios_safari && "false" !== d.attr("data-link"))
                    return document.location = d.attr("href"),
                    b.preventDefault(),
                    !1
            }
        })
    }
    var d = 0;
    a(document).on(ace.click_event + ".ace.menu", ".menu-toggler", function(b) {
        var c = a(this)
          , d = a(c.attr("data-target"));
        if (0 != d.length) {
            b.preventDefault(),
            d.ace_sidebar("mobileToggle", this);
            var e = ace.click_event + ".ace.autohide"
              , f = "true" === d.attr("data-auto-hide");
            return c.hasClass("display") ? (f && a(document).on(e, function(b) {
                return d.get(0) == b.target || a.contains(d.get(0), b.target) ? void b.stopPropagation() : (d.ace_sidebar("mobileToggle", this, !1),
                void a(document).off(e))
            }),
            "true" == d.attr("data-sidebar-scroll") && d.ace_sidebar_scroll("reset")) : f && a(document).off(e),
            !1
        }
    }).on(ace.click_event + ".ace.menu", ".sidebar-collapse", function(b) {
        var c = a(this).attr("data-target")
          , d = null;
        c && (d = a(c)),
        null != d && 0 != d.length || (d = a(this).closest(".sidebar")),
        0 != d.length && (b.preventDefault(),
        d.ace_sidebar("toggleMenu", this))
    }).on(ace.click_event + ".ace.menu", ".sidebar-expand", function(b) {
        var c = a(this).attr("data-target")
          , d = null;
        if (c && (d = a(c)),
        null != d && 0 != d.length || (d = a(this).closest(".sidebar")),
        0 != d.length) {
            var e = this;
            b.preventDefault(),
            d.ace_sidebar("toggleResponsive", this);
            var f = ace.click_event + ".ace.autohide";
            "true" === d.attr("data-auto-hide") && (d.hasClass(responsive_max_class) ? a(document).on(f, function(b) {
                return d.get(0) == b.target || a.contains(d.get(0), b.target) ? void b.stopPropagation() : (d.ace_sidebar("toggleResponsive", e),
                void a(document).off(f))
            }) : a(document).off(f))
        }
    }),
    a.fn.ace_sidebar = function(d, e, f) {
        var g, h = this.each(function() {
            var h = a(this)
              , i = h.data("ace_sidebar")
              , j = "object" == typeof d && d;
            i || h.data("ace_sidebar", i = new c(this,j)),
            "string" == typeof d && "function" == typeof i[d] && (g = e instanceof Array ? i[d].apply(i, e) : f !== b ? i[d](e, f) : i[d](e))
        });
        return g === b ? h : g
    }
    ,
    a.fn.ace_sidebar.defaults = {
        duration: 300,
        hide_open_subs: !0
    }
}(window.jQuery),
function(a, b) {
    function c(b, c) {
        function h(b) {
            var c = b
              , d = a(c)
              , e = null
              , f = !1;
            this.show = function() {
                null != e && clearTimeout(e),
                e = null,
                d.addClass("hover-show hover-shown"),
                f = !0;
                for (var a = 0; a < g.length; a++)
                    g[a].find(".hover-show").not(".hover-shown").each(function() {
                        i(this).hide()
                    })
            }
            ,
            this.hide = function() {
                f = !1,
                d.removeClass("hover-show hover-shown hover-flip"),
                null != e && clearTimeout(e),
                e = null;
                var a = d.find("> .submenu").get(0);
                a && j(a, "hide")
            }
            ,
            this.hideDelay = function(a) {
                null != e && clearTimeout(e),
                d.removeClass("hover-shown"),
                e = setTimeout(function() {
                    f = !1,
                    d.removeClass("hover-show hover-flip"),
                    e = null;
                    var b = d.find("> .submenu").get(0);
                    b && j(b, "hide"),
                    "function" == typeof a && a.call(this)
                }, m.settings.sub_hover_delay)
            }
            ,
            this.is_visible = function() {
                return f
            }
        }
        function i(b) {
            var c = a(b).data("subHide");
            return c || a(b).data("subHide", c = new h(b)),
            c
        }
        function j(b, c) {
            var d = a(b).data("ace_scroll");
            return d ? "string" == typeof c ? (d[c](),
            !0) : d : !1
        }
        function k(c) {
            var d = a(this)
              , f = a(c);
            c.style.top = "",
            c.style.bottom = "";
            var g = null;
            q.minimized && (g = d.find(".menu-text").get(0)) && (g.style.marginTop = "");
            var h = ace.helper.scrollTop()
              , i = 0
              , k = h;
            w && (i = b.offsetTop,
            k += i + 1);
            var m = d.offset();
            m.top = parseInt(m.top);
            var n, o = 0;
            c.style.maxHeight = "";
            var r = c.scrollHeight
              , n = d.height();
            g && (o = n,
            m.top += o);
            var t = parseInt(m.top + r)
              , v = 0
              , y = u.height()
              , z = parseInt(m.top - k - o)
              , A = y
              , B = q.horizontal
              , C = !1;
            B && this.parentNode == p && (v = 0,
            m.top += d.height(),
            C = !0),
            !C && (v = t - (y + h)) >= 0 && (v = z > v ? v : z,
            0 == v && (v = 20),
            z - v > 10 && (v += parseInt(Math.min(25, z - v))),
            m.top + (n - o) > t - v && (v -= m.top + (n - o) - (t - v)),
            v > 0 && (c.style.top = -v + "px",
            g && (g.style.marginTop = -v + "px"))),
            0 > v && (v = 0);
            var D = v > 0 && v > n - 20;
            if (D ? d.addClass("pull_up") : d.removeClass("pull_up"),
            B)
                if (d.parent().parent().hasClass("hover-flip"))
                    d.addClass("hover-flip");
                else {
                    var E = f.offset()
                      , F = f.width()
                      , G = u.width();
                    E.left + F > G && d.addClass("hover-flip")
                }
            var H = d.hasClass("hover") && !q.mobile_view;
            if (!(H && f.find("> li > .submenu").length > 0)) {
                var I = A - (m.top - h) + v
                  , J = v - I;
                if (J > 0 && n > J && (I += parseInt(Math.max(n, n - J))),
                I -= 5,
                !(90 > I)) {
                    var K = !1;
                    if (e)
                        f.addClass("sub-scroll").css("max-height", I + "px");
                    else {
                        if (K = j(c),
                        0 == K) {
                            f.ace_scroll({
                                observeContent: !0,
                                detached: !0,
                                updatePos: !1,
                                reset: !0,
                                mouseWheelLock: !0,
                                styleClass: l.settings.sub_scroll_style
                            }),
                            K = j(c);
                            var L = K.get_track();
                            L && f.after(L)
                        }
                        K.update({
                            size: I
                        })
                    }
                    if (x = I,
                    !e && K) {
                        I > 14 && r - I > 4 ? (K.enable(),
                        K.reset()) : K.disable();
                        var L = K.get_track();
                        if (L) {
                            L.style.top = -(v - o - 1) + "px";
                            var m = f.position()
                              , M = m.left;
                            M += s ? 2 : f.outerWidth() - K.track_size(),
                            L.style.left = parseInt(M) + "px",
                            C && (L.style.left = parseInt(M - 2) + "px",
                            L.style.top = parseInt(m.top) + (g ? o - 2 : 0) + "px")
                        }
                    }
                    ace.vars.safari && ace.helper.redraw(c)
                }
            }
        }
        var l = this
          , m = this
          , n = ace.helper.getAttrSettings(b, a.fn.ace_sidebar_hover.defaults);
        this.settings = a.extend({}, a.fn.ace_sidebar_hover.defaults, c, n);
        var o = a(b)
          , p = o.find(".nav-list").get(0);
        o.attr("data-sidebar-hover", "true"),
        g.push(o);
        var q = {}
          , r = ace.vars.old_ie
          , s = !1
          , t = l.settings.sub_hover_delay || !1;
        d && t && (l.settings.sub_hover_delay = parseInt(Math.max(l.settings.sub_hover_delay, 2500)));
        var u = a(window)
          , v = a(".navbar").eq(0)
          , w = "fixed" == v.css("position");
        this.update_vars = function() {
            w = "fixed" == v.css("position")
        }
        ,
        l.dirty = !1,
        this.reset = function() {
            0 != l.dirty && (l.dirty = !1,
            o.find(".submenu").each(function() {
                var b = a(this)
                  , c = b.parent();
                b.css({
                    top: "",
                    bottom: "",
                    "max-height": ""
                }),
                b.hasClass("ace-scroll") ? b.ace_scroll("disable") : b.removeClass("sub-scroll"),
                f(this, "absolute") ? b.addClass("can-scroll") : b.removeClass("can-scroll"),
                c.removeClass("pull_up").find(".menu-text:first").css("margin-top", "")
            }),
            o.find(".hover-show").removeClass("hover-show hover-shown hover-flip"))
        }
        ,
        this.updateStyle = function(a) {
            sub_scroll_style = a,
            o.find(".submenu.ace-scroll").ace_scroll("update", {
                styleClass: a
            })
        }
        ,
        this.changeDir = function(a) {
            s = "right" === a
        }
        ;
        var x = -1;
        e || o.on("hide.ace.submenu.sidebar_hover", ".submenu", function(b) {
            if (!(1 > x)) {
                b.stopPropagation();
                var c = a(this).closest(".ace-scroll.can-scroll");
                0 != c.length && f(c[0], "absolute") && c[0].scrollHeight - this.scrollHeight < x && c.ace_scroll("disable")
            }
        }),
        e || o.on("shown.ace.submenu.sidebar_hover hidden.ace.submenu.sidebar_hover", ".submenu", function(b) {
            if (!(1 > x)) {
                var c = a(this).closest(".ace-scroll.can-scroll");
                if (0 != c.length && f(c[0], "absolute")) {
                    var d = c[0].scrollHeight;
                    x > 14 && d - x > 4 ? c.ace_scroll("enable").ace_scroll("reset") : c.ace_scroll("disable")
                }
            }
        });
        var y = -1
          , z = d ? "touchstart.sub_hover" : "mouseenter.sub_hover"
          , A = d ? "touchend.sub_hover touchcancel.sub_hover" : "mouseleave.sub_hover";
        o.on(z, ".nav-list li, .sidebar-shortcuts", function(b) {
            if (q = o.ace_sidebar("vars"),
            !q.collapsible) {
                var c = a(this)
                  , e = !1
                  , g = c.hasClass("hover")
                  , h = c.find("> .submenu").get(0);
                if (!(h || this.parentNode == p || g || (e = c.hasClass("sidebar-shortcuts"))))
                    return void (h && a(h).removeClass("can-scroll"));
                var j = h
                  , m = !1;
                if (j || this.parentNode != p || (j = c.find("> a > .menu-text").get(0)),
                !j && e && (j = c.find(".sidebar-shortcuts-large").get(0)),
                !(j && (m = f(j, "absolute")) || g))
                    return void (h && a(h).removeClass("can-scroll"));
                var n = t ? i(this) : null;
                if (h)
                    if (m) {
                        l.dirty = !0;
                        var s = ace.helper.scrollTop();
                        if (t && !n.is_visible() || !d && s != y || r)
                            if (a(h).addClass("can-scroll"),
                            r || d) {
                                var u = this;
                                setTimeout(function() {
                                    k.call(u, h)
                                }, 0)
                            } else
                                k.call(this, h);
                        y = s
                    } else
                        a(h).removeClass("can-scroll");
                t && n.show()
            }
        }).on(A, ".nav-list li, .sidebar-shortcuts", function(b) {
            q = o.ace_sidebar("vars"),
            q.collapsible || a(this).hasClass("hover-show") && t && i(this).hideDelay()
        })
    }
    if (!ace.vars.very_old_ie) {
        var d = ace.vars.touch
          , e = ace.vars.old_ie || d
          , f = "getComputedStyle"in window ? function(a, b) {
            return a.offsetHeight,
            window.getComputedStyle(a).position == b
        }
        : function(b, c) {
            return b.offsetHeight,
            a(b).css("position") == c
        }
        ;
        a(window).on("resize.sidebar.ace_hover", function() {
            a(".sidebar[data-sidebar-hover=true]").ace_sidebar_hover("update_vars").ace_sidebar_hover("reset")
        }),
        a(document).on("settings.ace.ace_hover", function(b, c, d) {
            "sidebar_collapsed" == c ? a(".sidebar[data-sidebar-hover=true]").ace_sidebar_hover("reset") : "navbar_fixed" == c && a(".sidebar[data-sidebar-hover=true]").ace_sidebar_hover("update_vars")
        });
        var g = [];
        a.fn.ace_sidebar_hover = function(d, e) {
            var f, g = this.each(function() {
                var b = a(this)
                  , g = b.data("ace_sidebar_hover")
                  , h = "object" == typeof d && d;
                g || b.data("ace_sidebar_hover", g = new c(this,h)),
                "string" == typeof d && "function" == typeof g[d] && (f = g[d](e))
            });
            return f === b ? g : f
        }
        ,
        a.fn.ace_sidebar_hover.defaults = {
            sub_hover_delay: 750,
            sub_scroll_style: "no-track scroll-thin"
        }
    }
}(window.jQuery);
